package com.mhtube.entity.po;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
* 用户表
* @TableName user
*/
public class User implements Serializable {

    /**
    * 用户ID
    */
    @NotBlank(message="[用户ID]不能为空")
    @Size(max= 15,message="编码长度不能超过15")
    @ApiModelProperty("用户ID")
    private String userId;
    /**
    * 用户名
    */
    @NotBlank(message="[用户名]不能为空")
    @Size(max= 30,message="编码长度不能超过30")
    @ApiModelProperty("用户名")
    @Length(max= 30,message="编码长度不能超过30")
    private String username;
    /**
    * 密码
    */
    @NotBlank(message="[密码]不能为空")
    @Size(max= 30,message="编码长度不能超过30")
    @ApiModelProperty("密码")
    @Length(max= 30,message="编码长度不能超过30")
    private String password;
    /**
    * 邮箱
    */
    @NotBlank(message="[邮箱]不能为空")
    @Size(max= 40,message="编码长度不能超过40")
    @ApiModelProperty("邮箱")
    @Length(max= 40,message="编码长度不能超过40")
    private String email;
    /**
    * 用户昵称
    */
    @NotBlank(message="[用户昵称]不能为空")
    @Size(max= 30,message="编码长度不能超过30")
    @ApiModelProperty("用户昵称")
    @Length(max= 30,message="编码长度不能超过30")
    private String nikeName;
    /**
    * 注册时间
    */
    @NotNull(message="[注册时间]不能为空")
    @ApiModelProperty("注册时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date registerDate;
    /**
    * 最后登录时间
    */
    @NotNull(message="[最后登录时间]不能为空")
    @ApiModelProperty("最后登录时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date lastLoginDate;
    /**
    * 用户状态(0：注销，1：正常，2：封禁)
    */
    @NotNull(message="[用户状态(0：注销，1：正常，2：封禁)]不能为空")
    @ApiModelProperty("用户状态(0：注销，1：正常，2：封禁)")
    private Integer status;
    /**
    * 个人描述
    */
    @Size(max= 100,message="编码长度不能超过100")
    @ApiModelProperty("个人描述")
    @Length(max= 100,message="编码长度不能超过100")
    private String description;
    /**
    * 关注数
    */
    @NotNull(message="[关注数]不能为空")
    @ApiModelProperty("关注数")
    private Integer subscribedNum;
    /**
    * 粉丝数
    */
    @NotNull(message="[粉丝数]不能为空")
    @ApiModelProperty("粉丝数")
    private Integer fanNum;
    /**
    * 获赞数 
    */
    @NotNull(message="[获赞数 ]不能为空")
    @ApiModelProperty("获赞数 ")
    private Integer likesNum;
    /**
    * 播放数
    */
    @NotNull(message="[播放数]不能为空")
    @ApiModelProperty("播放数")
    private Integer playNum;
    /**
    * 总空间(单位Byte)
    */
    @NotNull(message="[总空间(单位Byte)]不能为空")
    @ApiModelProperty("总空间(单位Byte)")
    private Long totalSpace;
    /**
    * 已使用空间(单位Byte)
    */
    @NotNull(message="[已使用空间(单位Byte)]不能为空")
    @ApiModelProperty("已使用空间(单位Byte)")
    private Long usedSpace;

    public List<Video> getVideoList() {
        return videoList;
    }

    public void setVideoList(List<Video> videoList) {
        this.videoList = videoList;
    }

    /**
     * 拥有视频
     */
    private List<Video> videoList;

    /**
    * 用户ID
    */
    public void setUserId(String userId){
    this.userId = userId;
    }

    /**
    * 用户名
    */
    public void setUsername(String username){
    this.username = username;
    }

    /**
    * 密码
    */
    public void setPassword(String password){
    this.password = password;
    }

    /**
    * 邮箱
    */
    public void setEmail(String email){
    this.email = email;
    }

    /**
    * 用户昵称
    */
    public void setNikeName(String nikeName){
    this.nikeName = nikeName;
    }

    /**
    * 注册时间
    */
    public void setRegisterDate(Date registerDate){
    this.registerDate = registerDate;
    }

    /**
    * 最后登录时间
    */
    public void setLastLoginDate(Date lastLoginDate){
    this.lastLoginDate = lastLoginDate;
    }

    /**
    * 用户状态(0：注销，1：正常，2：封禁)
    */
    public void setStatus(Integer status){
    this.status = status;
    }

    /**
    * 个人描述
    */
    public void setDescription(String description){
    this.description = description;
    }

    /**
    * 关注数
    */
    public void setSubscribedNum(Integer subscribedNum){
    this.subscribedNum = subscribedNum;
    }

    /**
    * 粉丝数
    */
    public void setFanNum(Integer fanNum){
    this.fanNum = fanNum;
    }

    /**
    * 获赞数 
    */
    public void setLikesNum(Integer likesNum){
    this.likesNum = likesNum;
    }

    /**
    * 播放数
    */
    public void setPlayNum(Integer playNum){
    this.playNum = playNum;
    }

    /**
    * 总空间(单位Byte)
    */
    public void setTotalSpace(Long totalSpace){
    this.totalSpace = totalSpace;
    }

    /**
    * 已使用空间(单位Byte)
    */
    public void setUsedSpace(Long usedSpace){
    this.usedSpace = usedSpace;
    }


    /**
    * 用户ID
    */
    public String getUserId(){
    return this.userId;
    }

    /**
    * 用户名
    */
    public String getUsername(){
    return this.username;
    }

    /**
    * 密码
    */
    public String getPassword(){
    return this.password;
    }

    /**
    * 邮箱
    */
    public String getEmail(){
    return this.email;
    }

    /**
    * 用户昵称
    */
    public String getNikeName(){
    return this.nikeName;
    }

    /**
    * 注册时间
    */
    public Date getRegisterDate(){
    return this.registerDate;
    }

    /**
    * 最后登录时间
    */
    public Date getLastLoginDate(){
    return this.lastLoginDate;
    }

    /**
    * 用户状态(0：注销，1：正常，2：封禁)
    */
    public Integer getStatus(){
    return this.status;
    }

    /**
    * 个人描述
    */
    public String getDescription(){
    return this.description;
    }

    /**
    * 关注数
    */
    public Integer getSubscribedNum(){
    return this.subscribedNum;
    }

    /**
    * 粉丝数
    */
    public Integer getFanNum(){
    return this.fanNum;
    }

    /**
    * 获赞数 
    */
    public Integer getLikesNum(){
    return this.likesNum;
    }

    /**
    * 播放数
    */
    public Integer getPlayNum(){
    return this.playNum;
    }

    /**
    * 总空间(单位Byte)
    */
    public Long getTotalSpace(){
        return this.totalSpace;
    }

    /**
    * 已使用空间(单位Byte)
    */
    public Long getUsedSpace(){
        return this.usedSpace;
    }

}
